Xceed Toolkit Plus for WPF v5.0 Documentation
In This Topic
    Retrieving a DataRow from a Data Item
    In This Topic

    The following example demonstrates how to retrieve a DataRow (container) for a data item using the GetContainerFromItem method. It is important to remember that data rows are virtualized; therefore, references to them or their cells should never be kept.

    VB.NET
    Copy Code
    Public Sub New()
      InitializeComponent()
      Dim grid As New DataGridControl()
      Dim view As New DataGridCollectionView( App.Orders.DefaultView )
      grid.ItemsSource = view
      ' Subscribe to the PropertyChanged event to know when the CurrentItem property changes.
      AddHandler grid.PropertyChanged, AddressOf grid_PropertyChanged
      Me.Content = grid
    End Sub
    Private Sub grid_PropertyChanged( ByVal sender As Object, _
                                     ByVal e As System.ComponentModel.PropertyChangedEventArgs )
      If e.PropertyName = "CurrentItem" Then
        ' Retrieve the data-row container for the current item. Can be Nothing if the data item
        ' is not in the viewport.
        Dim grid As DataGridControl = CType( sender, DataGridControl )
        Dim row As Xceed.Wpf.DataGrid.DataRow = TryCast( grid.GetContainerFromItem( grid.CurrentItem ), Xceed.Wpf.DataGrid.DataRow )
        ' Change the background of the data row to pink. Data rows are recycled once they
        ' exit the viewport; therefore, any modifications made to a data row will
        ' be discarded once it is no longer in the viewport.
        row.Background = Brushes.Pink
      End If
    End Sub
    C#
    Copy Code
    public Window1()
    {
      InitializeComponent();
      DataGridControl grid = new DataGridControl();   
        
      DataGridCollectionView view = new DataGridCollectionView( App.Orders.DefaultView );
      grid.ItemsSource = view;
      // Subscribe to the PropertyChanged event to know when the CurrentItem property changes.
      grid.PropertyChanged +=
            new System.ComponentModel.PropertyChangedEventHandler( grid_PropertyChanged );    
        
      this.Content = grid;
    }
    void grid_PropertyChanged( object sender, System.ComponentModel.PropertyChangedEventArgs e )
    {
      if( e.PropertyName == "CurrentItem" )
      {
        // Retrieve the data-row container for the current item. Can be null if the data item
        // is not in the viewport.
        DataGridControl grid = sender as DataGridControl;
        Xceed.Wpf.DataGrid.DataRow row = grid.GetContainerFromItem( grid.CurrentItem ) as Xceed.Wpf.DataGrid.DataRow;
        // Change the background of the data row to pink. Data rows are recycled once they
        // exit the viewport; therefore, any modifications made to a data row will
        // be discarded once it is no longer in the viewport.
        row.Background = Brushes.Pink;
      }
    }